Method and apparatus for interactive gameplay across multiple computing platforms

ABSTRACT

A method and apparatus is disclosed for enabling interactive gameplay.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation of pending U.S. application Ser. No. 13/479,107,filed on May 23, 2012, the entire contents of which is fullyincorporated herein by reference.

FIELD OF THE INVENTION

The embodiments relate generally to an interactive game system thatenables players to engage in a common interactive game using differentcomputing platforms.

BACKGROUND OF THE INVENTION

Interactive video games among multiple players within a social networkhave become increasingly popular. For example, the assignee of thisapplication is the creator of Bubble Witch Saga™, a popular game thatcan be played on facebook®. In Bubble Witch Saga, a particular player isfaced with challenges of increasing difficulty. A player can engage inan interactive game with other users within his or her social networksuch that they can play the same Bubble Witch Saga game. When eachplayer logs in to facebook and initiates the Bubble Witch Saga game, heor she will be provided with current information about the other playersin the game, such as the status of each player (score, level, etc.), thenames of players who are playing at the current time, and the names ofplayers who have recently joined the game. The platform in thissituation would be the facebook environment, where each player accessesthe game using a web browser through face book and the game is enabledby a server that communicates with each player's web browser using API'sin the facebook environment.

One limitation of the prior art systems is that players can only engagein a common interactive video game if they are using the same platform.At present, it is not possible to engage in a common interactive gamefrom different platforms, such as the facebook environment and an ‘iOS’environment (an operating system created and operated by Apple Inc. andused by mobile devices including iPhone® and iPad®) and Android® basedenvironments used by other mobile devices. It also is not possible toengage in a common interactive game when a user does not have networkconnectivity. What is needed is a gameplay system that can be accessedby users of different platforms. What is further needed is a gameplaysystem that allows play to continue even when a user has lost networkconnectivity and to synchronize once the user has regained networkconnectivity.

According to a first embodiment there is provided a computer implementedmethod of interactive gameplay comprising: receiving at a server gameinformation from each computing device of a plurality of computingdevices; storing said received game information in a respective field ofa respective data structure, each data structure being associated with arespective user and stored in a data store of said server; and sendinggame information of a user to a computing device associated with atleast one other user, wherein each data structure comprises: a user IDfield; a status of game progress field; and a list of at least one otheruser.

At least one data structure may further comprise a status of in-gamevirtual currency field.

Said storing of said received game information from each computingdevice may comprise comparing said game progress information of saidgame information with previously stored game progress informationassociated with a user of said each computing device and determiningbased on the outcome of said comparing whether to replace the storedgame progress information with said received game progress information.

Said game information may comprise one or more of: level; points; anditems obtained.

Said list of at least one other user may be created from a list ofcontacts from a social networking site.

The method may comprise: receiving at the server an interaction requestfrom a first computing device of said plurality of computing devices;and sending said interaction request to a second computing device ofsaid plurality of computing devices.

Said interaction request may be an invitation to play a game.

Said interaction request may be a request for an in-game item.

Said interaction request may be sent via a social networking site.

According to a second aspect of the present invention there is provideda computer implemented method of interactive gameplay comprising:sending from a computing device game information to a server; receivingat said computing device game information of at least one other user;storing said game information of at least one other user in a at leastone field of a data structure of a data store of said computing device,wherein said data structure comprises: a user ID field; a status of gameprogress field; and a list of at least one other user.

Said data structure further may comprise a status of in-game virtualcurrency field.

Said storing of said received game information may comprise comparinggame progress information of said game information with previouslystored game progress information associated with a said other user anddetermining based on the outcome of said comparing whether to replacethe stored game progress information with said received game progressinformation.

Said received game information comprises one or more of: level; points;and items obtained.

The list of at least one other user may be created from a list ofcontacts from a social networking site.

The method may comprise sending with said computing device aninteraction request to the server.

The method may comprise receiving at said computing device aninteraction request from the server.

Said interaction request may be an invitation to play a game.

Said interaction request may be request for an in-game item.

Said interaction request may be sent via a social networking site.

The computing device may be a mobile device.

The computing device may be a computer running a web browser.

According to a third aspect of the present invention there is providedserver comprising a data store comprising a plurality of datastructures, each data structure being associated with a respective userand wherein each data structure comprises: a user ID field; a status ofgame progress field; and a list of at least one other user wherein theserver is configured to: receive game information from each computingdevice of a plurality of computing devices; store said received gameinformation in a respective field of a respective one of said pluralityof data structures; and send game information of a user to a computingdevice associated with at least one other user.

According to a fourth aspect of the present invention there is provideda computing device comprising a data store comprising a data structurecomprising: a user ID field; a status of game progress field; and a listof at least one other user wherein the computing device is configuredto: send game information to a server; receive at said computing devicegame information of at least one other user; store said game informationof at least one other user in a at least one field of said datastructure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a prior art interactive game system.

FIG. 2 illustrates an embodiment of a system that enables an interactivegame by computing devices of different platforms.

FIG. 3 illustrates the embodiment for FIG. 2 with various datastructures.

FIG. 4 illustrates an embodiment for creating a new interactive gamesession.

FIGS. 5A and 5B illustrate an embodiment for adding a new player to aninteractive game.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 depicts a prior art system in which exemplary computing devices30 and 40 are coupled to server 20 across network 10. Computing devices30 and 40 each can be a desktop, notebook, server, mobile device, or anyother type of device with network connectivity. Network 10 can be a LAN,WAN, the Internet, or any other type of network. Computing devices 30and 40 and server 20 each are coupled to network 10 using wiredconnections (such as Ethernet, DSL, cable modems, or other known wiredconnections) or wireless connections (such as 802.11, CDMA, EDGE, EV-DO,or other known wireless connections). Notably, in this prior art system,all communication between computing device 30, computing device 40, andserver 20 occur using a common protocol, such as HTTP or an API.

FIG. 2 depicts an embodiment of the present invention. Computing device130 is coupled to server 122 over network 100. Computing device 140 iscoupled to server 124 over network 100.

In this example, computing device 130 is a PC running a first platform,such as the facebook environment. Server 122 is configured tocommunicate with computing devices running the first platform, such ascomputing device 130. For example, server 122 can be configured tocommunicate using facebook APIs with computing devices running the firstplatform.

Computing device 140 is a mobile device running a second platform, suchas an iPhone application or Android® application. Server 124 isconfigured to communicate with computing devices running the secondplatform, such as computing device 140. For example, server 124 can beconfigured to communicate using a proprietary API with computing devicesusing the second platform. Server 122 and server 124 are coupled toserver 120.

In this embodiment, User A (the user of computing device 130) and User B(the user of computing device 140) are able to play an interactive gametogether. With reference now to FIG. 3, the same structures from FIG. 2are shown. Computing device 130 creates and stores data structure 201for User A, and computing device 140 creates and stores data structure301 for User B. Server 122 creates and stores data structure 202 forUser A, and server 124 creates and stores data structure 302 for User B.Server 120 creates and stores data structure 203 for User A and datastructure 303 for User B. Each of these data structures comprise commonfields and sub-fields, such as the fields and sub-fields shown in Table1:

TABLE 1 FIELDS SUB-FIELDS Data structure ID User ID Name, Email address,Photo Game ID Timestamp of last data structure update Status of GameProgress Level, Points, Items Obtained In-Game Purchases Amount ofpurchase, timestamp of purchase, item purchase, status of use ofpurchase within game In-Game Virtual Currency Amount, time line of useof currency Other Players For each other player: User ID, Data StructureID, Status of Game Progress (and sub-fields)

Optionally, data structures 202, 203, 302, and 303 can be tables in adatabase, such as a MySQL database, wherein the key is the DataStructure ID, Game ID, or User ID. The database storing data structure202 can run on server 122, the database storing data structure 302 canrun on server 124, and the database or databases storing data structures203 and 303 can run on server 120. Optionally, data structures 201 and301 can be tables in databases running on computing device 130 andcomputing device 140, respectively.

Referring now to FIG. 4, the initiation of an interactive game in anembodiment will now be discussed. In this example, computing device 130,at User A's instruction, requests a new game to be created by sending amessage to server 122, and computing device 130 creates data structure201 (step 400). Server 122 then creates a new Game ID and data structure202 (step 405). Server 122 sends a message to server 120 that the newGame ID has been created and that data structure 202 has been created(step 410). Server 120 then creates data structure 203 and populates thefields and sub-fields (step 415). Server 120 and server 122 thensynchronize data structure 203 and data structure 202 using thesynchronization process described below (step 420). Server 122 andcomputing device 130 then synchronize data structure 202 and datastructure 201 using the synchronization process described below (step425).

With reference now to FIGS. 5A and 5B, adding an additional player tothe interactive game described previously with reference to FIG. 4 willnow be discussed. In this example, computing device 130, at User A'sinstruction, submits a request to server 122 to invite User B to theinteractive game (step 450). Server 122 submits the request to server120 to invite User B (step 455). Server 120 then sends a request to UserB to join the game (step 460). This request can be by email, SMS or MMStext message, an API sent directly to an application running on acomputing device associated with User B˜ or another communicationmechanism. User B then accepts the request using computing device 140(step 465). The acceptance can be made by selecting a web link,responding by email, responding by SMS or MMS text message, selecting abutton within an application, or any other communication mechanism.Computing device 140 transmits the acceptance to server 124 (step 470).Server 124 transmits the acceptance to server 120 (step 475). Server 120creates data structure 303 and updates data structure 203 (step 480).Server 120 and server 122 synchronize data structures 203 and 202 (step485). Server 122 and computing device 130 synchronize data structures202 and 201 (step 490). Server 124 creates data structure 302 based ondata structure 303, and computing device 140 creates data structure 301based on data structure 302 (step 495).

In this example, server 122 communicates with computing device 130 usinga first API (such as the facebook API), and server 124 communicates withcomputing device 140 using a second API (such as a proprietary APIdesigned for use with an iPhone or Android device as the case may be).Server 122 and server 124 can communicate with server 120 using thefirst and second APIs, respectively, or using a third API or protocol(such as an API for inter-server communications).

An embodiment of a synchronization process will now be discussed. In theembodiments described thus far, data structures 201, 202, and 203correspond to user A, and data structures 301, 302, and 303 correspondto User B. Optionally, server 120 can create and store a master gamedata structure 400 for the game that User A and User B have joined.Master game data structure 400 can contain the same fields andsub-fields describe previously for data structures 201, 202, 203, 301,302, and 303.

During game play, User A will interact with computing device 130 andUser B will interact with computing device 140. Computing device 130runs local application 135 (not shown), and computing device 140 runslocal application 145 (not shown). Local application 135 will updatedata structure 201 as User A progresses through the game. Localapplication 145 will update data structure 301 as User B progressesthrough the game. User A and User B need not necessarily be playing atthe same time.

In the situation where User A is playing the game, periodically (such asevery 100 ms) computing device 130 will send a synchronization requestto server 122. The request will contain a timestamp. If that timestampindicates a later time than the timestamp in data structure 202, thendata structure 202 will be written over with the data from datastructure 201 as to fields and sub-fields that have changed and thetimestamp field of data structure 202 will be updated with the timestampin the initial request from computing device 130. However, if the “OtherPlayers” field and sub-field of data structures 201 and 202 do notmatch, then the “Other Players” field and sub-fields of data structure201 will be overwritten with the data from data structure 202, becausethis mismatch would only occur if the status of other players hadchanged since the last synchronization event, in which case datastructure 202 would contain the more recent data for the “OtherPlayers.”

Periodically, server 122 will send a synchronization request to server120. If the timestamp of data structure 202 indicates a later time thanthe timestamp in data structure 203, then data structure 203 will bewritten over with the data from data structure 202 as to fields andsub-fields that have changed and the timestamp field of data structure203 will be updated with the timestamp of data structure 202. However,if the “Other Players” field and sub-field of data structures 202 and203 do not match, then the “Other Players” field and sub-fields of datastructure 202 will be overwritten with the data from data structure 203,because this mismatch would only occur if the status of other playershad changed since the last synchronization event, in which case datastructure 203 would contain the more recent data for the “OtherPlayers.”

If the timestamp of data structure 203 indicates a later time than thetimestamp in master game data structure 400, then master game datastructure 400 will be written over with the data from data structure 203as to fields and sub-fields that have changed and its timestamp fieldwill be updated with the timestamp of data structure 203. However, ifthe “Other Players” field and sub-field of master game data structure400 and data structure 203 do not match, then the “Other Players” fieldand sub-fields of data structure 203 will be overwritten with the datafrom master game data structure 400, because this mismatch would onlyoccur if the status of other players had changed since the lastsynchronization event, in which case master game data structure 400would contain the more recent data for the “Other Players.”

This synchronization process between computing device 130, server 122,and server 120 has been described thus far with reference to changes inthe status of User A. It will be understood by one of ordinary skill inthe art that the same changes could occur in data structures 301, 302,and 303 and master game data structure 400 with reference to changes inthe status of User B.

The changes in data structures as to User A will now propagate to thedata structures associated with User B. Periodically, server 120 willcompare the timestamp fields of master game data structure 400 and datastructure 303. If the timestamp of master game data structure 400 is alater time than that of data structure 303, then data structure 303 willbe written over with the data from master game data structure 400 as to“Other Players” field and sub-fields that have changed and the timestamp of data structure 303 will be updated with the time stamp of datastructure 400.

Periodically, server 120 will send a synchronization request to server124. The request will contain the timestamp from data structure 303. Ifthat timestamp indicates a later time than the timestamp in datastructure 302, then data structure 302 will be written over with thedata from data structure 303 as to the “Other Players” field andsub-fields that have changed.

Periodically, server 124 will send a synchronization request tocomputing device 140. The request will contain the timestamp from datastructure 303. If that timestamp indicates a later time than thetimestamp in data structure 302, then data structure 302 will be writtenover with the data from data structure 303 as to “Other Players” fieldand sub-fields that have changed.

Thus, it will be appreciated that User A and User B can engage in aninteractive game through this synchronization process.

An embodiment enabling “airplane mode” will now be described. If User Bloses connectivity to network 100 on computing device 140 (as mightoccur, for example, if computing device 140 is on an airplane or haslost WiFi or cellphone connectivity), then User B can continue to playthe game on computing device 140 using local application 145. Localapplication 145 will continue to update data structure 301. Whencomputing device 140 regains connectivity to network 100; computingdevice 140 will initiate the synchronization process described above. Inthis manner, User A will learn of the changes in User B's status eventhough the changes had occurred while User B was not connected tonetwork 100.

The embodiments have been described as to two users, User A and User B,but it will be appreciated by one of ordinary skill in the art that theembodiments can accommodate any number of players. Similarly, theembodiments have been described as to two computing devices using twodifferent platforms, computing device 130 and 140, but it will beappreciated by one of ordinary skill in the art that the embodiments canaccommodate any number of computing devices utilizing any number ofdifferent platforms.

In addition, while the foregoing has been with reference to particularembodiments of the invention, it will be appreciated by those skilled inthe art that changes in these embodiments may be made without departingfrom the principles and spirit of the invention, the scope of which isdefined by the appended claims.

1. A computer implemented method of interactive gameplay comprising:receiving at a server game information from each computing device of aplurality of computing devices; storing said received game informationin a respective field of a respective data structure, each datastructure being associated with a respective user and stored in a datastore of said server; and sending game information of a user to acomputing device associated with at least one other user, wherein eachdata structure comprises: a user ID field; a status of game progressfield; and a list of at least one other user.
 2. The method of claim 1wherein at least one data structure further comprises a status ofin-game virtual currency field.
 3. The method of claim 1 wherein saidstoring of said received game information from each computing devicecomprises comparing said game progress information of said gameinformation with previously stored game progress information associatedwith a user of said each computing device and determining based on theoutcome of said comparing whether to replace the stored game progressinformation with said received game progress information.
 4. The methodof claim 3 wherein said game information comprises one or more of:level; points; and items obtained.
 5. The method of claim 1 wherein saidlist of at least one other user is created from a list of contacts froma social networking site.
 6. The method of claim 1 comprising: receivingat the server an interaction request from a first computing device ofsaid plurality of computing devices; and sending said interactionrequest to a second computing device of said plurality of computingdevices.
 7. The method of claim 6 wherein said interaction request is aninvitation to play a game.
 8. The method of claim 6 wherein saidinteraction request is a request for an in-game item.
 9. The method ofclaim 6 wherein said interaction request is sent via a social networkingsite.
 10. A computer implemented method of interactive gameplaycomprising: sending from a computing device game information to aserver; receiving at said computing device game information of at leastone other user; storing said game information of at least one other userin a at least one field of a data structure of a data store of saidcomputing device, wherein said data structure comprises: a user IDfield; a status of game progress field; and a list of at least one otheruser.
 11. The method of claim 10 wherein said data structure furthercomprises a status of in-game virtual currency field.
 12. The method ofclaim 10 wherein said storing of said received game informationcomprises comparing game progress information of said game informationwith previously stored game progress information associated with a saidother user and determining based on the outcome of said comparingwhether to replace the stored game progress information with saidreceived game progress information.
 13. The method of claim 10 whereinsaid received game information comprises one or more of: level; points;and items obtained.
 14. The method of claim 10 wherein the list of atleast one other user is created from a list of contacts from a socialnetworking site.
 15. The method of claim 10 comprising sending with saidcomputing device an interaction request to the server.
 16. The method ofclaim 10 comprising receiving at said computing device an interactionrequest from the server.
 17. The method of claim 23 wherein saidinteraction request is an invitation to play a game.
 18. The method ofclaim 23 wherein said interaction request is a request for an in-gameitem.
 19. The method of claim 23 wherein said interaction request issent via a social networking site.
 20. The method of claim 10 whereinthe computing device is a mobile device.
 21. The method of claim 10wherein the computing device is a computer running a web browser.
 22. Aserver comprising a data store comprising a plurality of datastructures, each data structure being associated with a respective userand wherein each data structure comprises: a user ID field; a status ofgame progress field; and a list of at least one other user wherein theserver is configured to: receive game information from each computingdevice of a plurality of computing devices; store said received gameinformation in a respective field of a respective one of said pluralityof data structures; and send game information of a user to a computingdevice associated with at least one other user.
 23. A computing devicecomprising a data store comprising a data structure comprising: a userID field; a status of game progress field; and a list of at least oneother user wherein the computing device is configured to: send gameinformation to a server; receive at said computing device gameinformation of at least one other user; store said game information ofat least one other user in a at least one field of said data structure.